iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0
Modern Web

想轉職的鯊魚從零基礎開始學習JavaScript系列 第 15

想轉職的鯊魚從零基礎開始學習JavaScript Day-15 The Number Type數字(一)

  • 分享至 

  • xImage
  •  

前言

說完字串之後接下來換另一個大寶貝-Number數字。

Number Type數字精確地說一共有18,437,736,874,454,810,627 (2^64 - 2^53 + 3)個值(跟最大精度的2^53-1是不同的東西),不像我們數學學的分類自然數、整數、有理數那些,Number只有分為兩類,一個是使用雙精度浮點數儲存的number,另一個則是可以處理超出雙精度浮點數精度範圍bigInt,他們都是基本型別的一種,這邊先以介紹Number為主。

Number(value) 數字化

顧名思義即是將value的型別type轉換成Number。

各種型別的轉換結果:

  • Undefined → NaN
  • Null → 0
  • Boolean:true → 1 ; false → 0
  • Number → 變十進位數字
  • BigInt → 變回數字(雙精度浮點數)
  • String → 可以轉換會變成數字,不能轉換會回傳NaN
  • Symbol → 回傳TypeError(型別錯誤)
  • Object → 不一定,依物件的種類有所不同

ToObject(物件化)

數字跟字串不一樣,不會自動物件化的特性,
所有Properties跟method都要透過Object(Number)去執行,
像是這樣Object(Number).constructor.Properties/method()
然而Object(Number)有些Properties/method()不影響結果
所以調用不影響結果的Properties跟method都是從Number Constructor(數字的原型結構)的使用,也就是Number開頭

Properties of the Number Constructor(Number構造式的屬性)

數字的Properties都是數字的原型結構的內容,

  • Number.EPSILON
    1跟比1還要大的最小值的差值,
    也是最小浮點數的值。
  • Number.isFinite ( number )
    檢驗number是否是在有限的範圍,並用Boolean回傳結果。
    如果number不是數字 或是 NaN及正負無限回傳false
    其餘回傳true
  • Number.isInteger ( number )
    檢驗number是否是整數,並用Boolean回傳結果。
  • Number.isNaN ( number )
    檢驗number是否是NaN,並用Boolean回傳結果。
  • Number.isSafeInteger ( number )
    跟isFinite類似只是範圍侷限在正負2^53 - 1至內,也就是最大有效精度之內。
  • Number.MAX_SAFE_INTEGER
    叫出最大有效精度的值(2^53-1)。
  • Number.MAX_VALUE
    叫出最大值(接近1.7976931348623157 × 10^308),再上去就是正無限
  • Number.MIN_SAFE_INTEGER
    叫出最小有效精度的值(-(2^53-1))
  • Number.MIN_VALUE
    叫出最小的正數值(接近5 × 10^-324),
    但是在雙精度二進製表示中,可能的最小值是非規範化數字。
  • Number.NaN
    回傳NaN
  • Number.NEGATIVE_INFINITY
    回傳(-∞)負無限
  • Number.parseFloat ( string )
    將字串轉成數字,比較特別是當字串是數字+其他非數字的組合,會將數字提出,非數字的部分捨棄(數字一定要在前面),如果不能轉換則會回傳false。
  • Number.parseInt ( string, radix )
    將string轉換成10進位的整數,radix表示string使用的進位,沒有則視為10進位。
  • Number.POSITIVE_INFINITY
    回傳(∞)正無限
  • Number.prototype
    呼叫出Number的原型對象。

Properties of the Number Prototype Object(Number原型物件的屬性)

注意:不能直接用數字使用,可以直接以原型或是透過變數去呼叫

  • Number.prototype.constructor
    數字的原型結構,相當於Number,可以調用上面Properties of the Number Constructor的所有東西
  • Number.prototype.toExponential ( fractionDigits )
    將數字改用科學記號做紀錄,fractionDigits表示小數點後的位數
  • Number.prototype.toFixed ( fractionDigits )
    將數字四捨五入到小數點後指定位數,
  • Number.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
    將數字轉變成reserved1當地語言的數字
  • Number.prototype.toPrecision ( precision )
    將數字四捨五入到precision位之後,無則表示不進行四捨五入。
  • Number.prototype.toString ( [ radix ] )
    將數字轉成指定進位,radix表示XX進位,無則代表10進位。
  • Number.prototype.valueOf ( )
    回傳Number數字,即是呼叫他數字的值

結語

原本想跟字串一樣分Properties(屬性)跟method(方法)後來看了ECMA覺得還是依Prototype跟Constructor去分類,但是看完這些是不是感覺還有東西被遺漏了,沒錯Number的相關用法除了Number之外還有一個Math,關於Math的東西我們明天再談吧!

鯊語錄

參考資料

EMCA262
MDN-Number


上一篇
想轉職的鯊魚從零基礎開始學習JavaScript Day-14 The String Type字串(二)
下一篇
想轉職的鯊魚從零基礎開始學習JavaScript Day-16 The Number Type數字(二)
系列文
想轉職的鯊魚從零基礎開始學習JavaScript31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言